The present invention relates to the field of computer system networks. In particular, the present invention pertains to a software-based module for augmenting a server computer system to perform network interface card load balancing for incoming data packets.
Computer systems linked to each other in a network are commonly used in businesses and other organizations. Computer system networks (xe2x80x9cnetworksxe2x80x9d) provide a number of benefits for the user, such as increased productivity, flexibility, and convenience as well as resource sharing and allocation.
Networks are configured in different ways depending on implementation specific details such as the hardware used and the physical location of the equipment, and also depending on the particular objectives of the network. In general, networks include one or more server computer systems, each communicatively coupled to numerous client computer systems.
In contemporary networks, server computer systems are typically coupled to the network using more than one network interface card (NIC). Multiple NICs increase the total available bandwidth capacity for transmitting and sending data packets. Multiple NICs also provide resiliency and redundancy if one of the NICs fails so that the client computer systems in communication with the server computer system through a particular NIC are not cut off from the server should that NIC fail.
The prior art is problematic because incoming data packets (that is, data packets being received by the server computer system) may not be evenly distributed across the NICs. Thus, one NIC may receive a disproportionate share of the incoming data traffic. Consequently, traffic over that NIC may be slowed, reducing the overall efficiency of the server computer system and hence the network.
For example, in a TCP/IP (Transmission Control Protocol/Internet Protocol) transaction initiated by a server computer system, data packets are transmitted from the server computer system to a client computer system. After a certain number of data packets are transmitted and received, an acknowledgment signal is sent from the client computer system and received by the server system; the number of data packets that can be transmitted between acknowledgments is often referred to as the window size.
NICs typically utilize a duplex configuration so that they can receive and transmit simultaneously. However, as the number of transmissions increase the number of acknowledgment signals also increase, As the number of acknowledgments increase, a bottleneck may occur at a NIC that is seeing a disproportionate share of the incoming data traffic. Consequently, acknowledgment signals arriving over that NIC may be delayed before they reach the server computer system. When the server computer system senses that the acknowledgment signals are not being received in time, the server computer system reduces the size of the window, and so fewer data packets are transmitted between acknowledgments. Thus, the overall performance of the server computer system is reduced.
The prior art is also problematic for transactions initiated from client computer systems. Typically, a client computer system is assigned to a particular NIC on the server computer system. A network may be initially set up so that the incoming traffic from client computer systems is distributed evenly; that is, when the network is established, each NIC is assigned the same number of client computer systems, or perhaps an attempt is made to predict the volume of traffic expected from each client computer system and assign the NICs accordingly. However, over time the distribution of data traffic is likely to change significantly from the initial set of assumptions because the manner and frequency of use of each client computer system will not remain the same. Thus, the prior art is problematic because in time the incoming data traffic received by the server computer system will likely evolve to a state where the traffic is not distributed evenly over the NICs.
In the case of a failure of a NIC, it is desirable to be able to redistribute the traffic handled by that NIC over the remaining functioning NICs. Otherwise, if the traffic from the failed NIC is transferred to a single NIC, that NIC may be handling a disproportionate share of incoming data traffic, resulting in a bottleneck over that NIC and leading to the problems described above.
Accordingly, a need exists for a system and method that balance the load of incoming data packets received by a server computer system that has multiple NICs. What is further needed is a system and method that address the above need when either the server computer system or the client computer system initiates a transaction. What is also needed is a system and method that address the above needs and dynamically adjust the receive load balancing to help maintain an even distribution of incoming data packets across the multiple NICs over time or in the event of a NIC failure.
The present invention provides a system and method that balance the load of incoming data packets received by a server computer system having multiple NICs. The present invention also provides a system and method that address the above need when either the server computer system or the client computer system initiates a transaction. The present invention also provides a system and method that address the above needs and dynamically adjust the receive load balancing to help maintain an even distribution of incoming data packets across the multiple NICs over time or in the event of a NIC failure.
Specifically, in one embodiment, the present invention pertains to a method for load balancing incoming data packets received by a server computer system adapted to have a plurality of network interface cards coupled thereto and communicatively coupled to client computer systems in a network. A first media access control (MAC) address for a first NIC is selected using a load balancing scheme. A first directed data packet containing the first MAC address and a network address for the server computer system is sent to a first client computer system. The first MAC address and the network address are stored in a protocol cache of the first client computer system. A second MAC address for a second NIC is also selected using the load balancing scheme. A second directed packet containing the second MAC address and the network address is sent to a second client computer system. The second MAC address and the network address are stored in a protocol cache of the second client computer system. Thus, the server computer system will receive an incoming data packet from the first client computer system over the first NIC and from the second computer system over the second NIC.
In one embodiment, a broadcast data packet containing an alias network address for the server computer system is sent to the first client computer system. The client computer system responds to the broadcast data packet and provides its network address and MAC address. The server computer system stores this information in protocol cache. A MAC address is selected using the receive load balancing scheme. A directed data packet containing the actual network address of the server computer system and the selected MAC address is sent to the first client computer system as described above.
In one embodiment, when a Transmission Control Protocol (TCP) transaction is initiated between the server computer system and a client computer system, a MAC address is selected using the receive load balancing scheme. Before the TCP is performed, the selected MAC address and the network address of the server computer system are sent to the client computer system in a directed data packet. The client computer system uses the selected MAC address to replace a MAC address previously stored in its protocol cache.
In one embodiment, the receive load balancing scheme is a round-robin approach. The plurality of NICs of the server computer system are arranged in a particular sequence. The receive load balancing scheme selects a MAC address according to the sequence, and repeats the sequence after each MAC is selected.
In one embodiment, the protocol cache of the client computer system and of the server computer system are Address Resolution Protocol (ARP) caches.
In one embodiment, the directed data packets and the broadcast data packets are compliant with ARP.
These and other objects and advantages of the present invention will become obvious to those of ordinary skill in the art after having read the following detailed description of the preferred embodiments which are illustrated in the various drawing figures.